Modern operating systems secure themselves by segmenting running applications from each other and from different security contexts on an operating system. A kernel is a low-level system process that controls all other processes and runs in one security context. Users of the operating system also run in their own security context. These security segments communicate with each other through well secured programming interfaces. Many of the low-level system management functions are exposed to both inter-process (locally on the operating system) and remote procedure calls (available over a network connection), while user level functions are exposed in users' security context via inter-process procedure calls.